package com.zkh.myutils.io.excel.data;

import java.util.ArrayList;
import java.util.List;

/**
 * 工作簿数据对象
 * @author zkh
 *
 */
public class WorkbookData {
	//Sheet数据
	List<SheetData> listData = new ArrayList<>();
	//Sheet名称和索引映射
	List<String> nameList = new ArrayList<>();
	
	/**
	 * 获取sheet名称列表
	 */
	public List<String> getSheetNameList(){
		return nameList;
	}
	
	/**
	 * 获取sheet数据对象
	 * @param index 索引
	 */
	public SheetData getSheetData(int index) {
		return listData.get(index);
	}
	
	/**
	 * 获取sheet数据对象
	 * @param sheetName sheet名称
	 */
	public SheetData getSheetData(String sheetName) {
		//获取索引
		int index = nameList.indexOf(sheetName);
		//为空
		if(index==-1) {
			throw new NullPointerException("sheet名称不存在");
		}
		//返回数据
		return getSheetData(index);
	}
	
	/**
	 * 保存数据（内部调用）
	 * @param sheetName sheet名称
	 * @param sheetData sheet数据对象
	 */
	public void putData(String sheetName, SheetData sheetData) {
		//保存
		listData.add(sheetData);
		//记录名称和索引映射
		nameList.add(sheetName);
	}
	
	/**
	 * 重置Sheet名称（内部调用）
	 */
	public void resetNameMap(List<String> sheetNameList) {
		//数据新顺序
		List<SheetData> newOrderList = new ArrayList<>();
		//遍历ID
		for(int i=0,len=sheetNameList.size(); i<len; i++) {
			//新数据索引
			newOrderList.add(getSheetData("xl/worksheets/sheet" + (i+1) + ".xml"));
		}
		//保存新顺序数据
		listData = newOrderList;
		nameList = sheetNameList;
	}

	@Override
	public String toString() {
		//结果容器
		StringBuilder sb = new StringBuilder();
		//长度
		int len = nameList.size();
		//遍历名称
		for(int i=0; i<len; i++) {
			//拼接值
			sb.append(nameList.get(i)).append(" => ").append(listData.get(i).toString());
		}
		//返回
		return sb.toString();
	}
}
